# coding: utf8
"""
逻辑控制
"""

"""
if...elif...else判断
"""
import random  # 判断随机数

number: int = random.choice(range(10))
if number > 6:
    print('H')
elif number > 3:
    print('M')
else:
    print('L')
top: bool = True if number == 9 else False  # 同top = number == 9
iterable = isinstance(range(10), (list, tuple, set))  # 类型判断
# 更多的类型引入typing库，typing.Generator、typing.Iterable等


"""
for...in...else循环
"""
for i in range(10):
    for j in range(10):
        if i < j:  # 内层计数>外层计数时
            break  # 最后一次9<9不成立时不会退出
    else:  # 如果遇到break时不会执行
        print(j)  # 前9次都不会打印，只会打印一次
else:  # 内层嵌套break不影响外层
    print(i)  # 这里也只会打印一次
# 带索引枚举遍历
for index, element in enumerate(list([1, 2, 3])):  # 列表
    print(index, element)
for index, (key, value) in enumerate(dict(a=1, b=2, c=3).items()):  # 字典
    print(index, (key, value))

"""
while ...else循环
"""
# 判断随机数
import random

while random.random() > 0.5:
    print(1)
    break
else:  # 循环体有break的情况时则不会执行
    print(2)

"""
for和while的break语句使用场景：若所有数据全部完成后，没有中断情况时，则输出完成结果；
尤其可以避免使用临时变量存储单次结果进行判断时。
在【错误异常处理】小节将延伸讲解，如何在多层嵌套中一次break到最外层。
"""
